Next: Local Variables, Previous: Global Variables, Up: Variables [Contents][Index]
In Emacs Lisp, certain symbols normally evaluate to
themselves. These include nil and t, as
well as any symbol whose name starts with
‘:’ (these are called
keywords). These symbols cannot be rebound, nor can
their values be changed. Any attempt to set or bind
nil or t signals a
setting-constant error. The same is true for a
keyword (a symbol whose name starts with
‘:’), if it is interned in the standard
obarray, except that setting such a symbol to itself is not an
error.
nil ≡ 'nil
⇒ nil
(setq nil 500) error→ Attempt to set constant symbol: nil
function returns t if object is a
symbol whose name starts with ‘:’,
interned in the standard obarray, and returns
nil otherwise.
These constants are fundamentally different from the constants
defined using the defconst special form (see
Defining
Variables). A defconst form serves to inform
human readers that you do not intend to change the value of a
variable, but Emacs does not raise an error if you actually
change it.